{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6.2不同 C 值对决策边界 间隔的影响"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "#引入 支持向量机 Calssify\n",
    "from sklearn.svm import LinearSVC\n",
    "\n",
    "#引入数据集\n",
    "from sklearn import datasets\n",
    "from sklearn.pipeline import Pipeline\n",
    "from sklearn.preprocessing import StandardScaler"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.线性SVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('std', StandardScaler()), ('linear_svc', LinearSVC(C=1))])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris = datasets.load_iris()\n",
    "\n",
    "x = iris.data[:,(2,3)]\n",
    "y = (iris.target ==2).astype(np.float64)\n",
    "\n",
    "svm_clf = Pipeline((\n",
    "    ('std',StandardScaler()),\n",
    "    ('linear_svc',LinearSVC(C = 1))\n",
    "))\n",
    "\n",
    "svm_clf.fit(x,y)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1., 0.])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "svm_clf.predict([[5.5,1.7],[1.5,.2]])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2.不同C值下的LinearSVC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\python3.8\\lib\\site-packages\\sklearn\\svm\\_base.py:1206: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('std', StandardScaler()), ('linear_svc', LinearSVC(C=100))])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "scaler = StandardScaler()\n",
    "\n",
    "svm_clf1 = LinearSVC(C = 1)\n",
    "scaled_svm_clf1 = Pipeline((\n",
    "    ('std',scaler),\n",
    "    ('linear_svc',svm_clf1)\n",
    "))\n",
    "\n",
    "\n",
    "\n",
    "svm_clf2 = LinearSVC(C = 100)\n",
    "scaled_svm_clf2 = Pipeline((\n",
    "    ('std',scaler),\n",
    "    ('linear_svc',svm_clf2)\n",
    "))\n",
    "\n",
    "scaled_svm_clf1.fit(x,y)\n",
    "scaled_svm_clf2.fit(x,y)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "#b\n",
    "b1 = svm_clf1.decision_function([-scaler.mean_ / scaler.scale_])\n",
    "b2 = svm_clf2.decision_function([-scaler.mean_ / scaler.scale_])\n",
    "\n",
    "#W\n",
    "w1 = svm_clf1.coef_[0] / scaler.scale_\n",
    "w2 = svm_clf2.coef_[0] / scaler.scale_\n",
    "\n",
    "#系数还原\n",
    "svm_clf1.intercept_ = np.array([b1])\n",
    "svm_clf2.intercept_ = np.array([b2])\n",
    "\n",
    "svm_clf1.coef_ = np.array([w1])\n",
    "svm_clf2.coef_ = np.array([w2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def plot_svc_bd(svm_clf,start,end,sv = True):\n",
    "    w = svm_clf.coef_[0]\n",
    "    b = svm_clf.intercept_[0]\n",
    "\n",
    "    x0 = np.linspace(start,end ,200)\n",
    "    #决策边界绘制\n",
    "    decision_bd = -w[0]/w[1]* x0 - b/w[1]\n",
    "\n",
    "    margin = 1/w[1]\n",
    "\n",
    "    # 上界\n",
    "    up = decision_bd + margin\n",
    "    #下界\n",
    "    down = decision_bd - margin\n",
    "\n",
    "    plt.plot(x0,decision_bd,'k-',linewidth = 2)\n",
    "    plt.plot(x0,up,'k--',linewidth = 2)\n",
    "    plt.plot(x0,down,'k--',linewidth = 2)\n",
    "\n",
    "    if(sv == True):\n",
    "        svs = svm_clf.support_vectors_\n",
    "        plt.scatter(svs[:,0],svs[:,1],s = 180,facecolors = '#FAA')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(4.0, 6.0, 0.8, 2.8)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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kvApUhAVzBvzVGJiIomJiYSF5bylO3fu5NZbb6VixYrcfffd2O127rjjDmn9NkF6ejqLFi1C13WioqJcZhLs1q0bDoejVMwk6K127drF1KlTcTqdbN26FYCxY8cyceJEADIyMvD395dh+CZwW55yx+qu7v5x5wrgIketWtdembpWLYknz4EDB9T333+vHn74YdWkSROXVckBVaFCBdW/f3/1/vvvq+XLl6v09PQSicOKr40oeYkpiSriuwiVdD7J7FAMuGkF8NL4Uxry1LJly1Tnzp1dvudCQkLUww8/rBYsWKAyMjI8Go/VvvvMiufixYsqKipKORwOVb58eeO90TRNhYeHqy+++EIdP368ZIO4Aau9V560ZcsW9eqrr6qEhARj2w8//KDq1q2rnn32WZWQkKCys7NNjLDklOY8JT1EPsJqU21aLZ5rOXLkiMskDbt373bZHxwcTM+ePY1JGrp06eKWllVveG2E+z0550kmrp3I450ft8wUw9JDVLDSlKf27NljrKOzefNmIOf7LTk5mfLlywOukzaUFKt991khnrS0NObMmYOu68yZM8dYV8zPz48+ffrgcDhMmUnQCq+NlYwZM4bJkycbtxs2bGjMJNixY0dLLSJfHKU5T0lB5COs9uVltXgKIzEx0eUapPwzcgGUK1fOKJBsNhvdunWjTJkyRX4cb3xtRPHkX5DSSgtRSkFUsNKap7Zv346u61y+fJn3338fyFn7KDQ01FirpXv37iUyNMhq331WiyclJYVffvkFXddZsGABGRkZQM5Mgrfffjt2u52hQ4d6ZCZBq702ZlNKsWrVKnRdZ+rUqS6TONntdpxOp4nRuUdpz1NSEPkIq315WS2em3Hs2DHi4uKMHqT8K5RDznoG3bt3N3qQunfvXqhpO0vDayOKJv+ClFZaiFIKooL5Up6Kjo5myJAhxu0GDRoYi4x27tzZba3fVvvus1o8+Z05c4aoqChjJsGsrCwAgoKCGDBgAHa7nSFDhlChQoUSeXwrvzZmy87OZtmyZei6zrRp03jllVcYN24cANu2bWP69OnY7XZatmxpcqRFU9rzlBREPsJqX15Wi8cdkpOTiYuLM3qQtmzZ4rI/KCiIbt26GZM09OjRwxiOkl9pfG1EwfK3uuWxSuubFEQF86U8pZRizZo1xiKjR44cMfY1bdqUVatWuWXIltW+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",
      "text/plain": [
       "<Figure size 1008x302.4 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(14,4.2))\n",
    "plt.subplot(121)\n",
    "\n",
    "#绘制数据\n",
    "#标签为1 \n",
    "plt.plot(x[:,0][y == 1],x[:,1][y == 1] ,'g^')\n",
    "#标签为0\n",
    "plt.plot(x[:,0][y == 0],x[:,1][y == 0] ,'bs')\n",
    "#绘制决策边界\n",
    "plot_svc_bd(svm_clf1,4,6,False)\n",
    "\n",
    "plt.axis([4,6,0.8,2.8])\n",
    "\n",
    "\n",
    "plt.subplot(122)\n",
    "#绘制数据\n",
    "#标签为1 \n",
    "plt.plot(x[:,0][y == 1],x[:,1][y == 1] ,'g^')\n",
    "#标签为0\n",
    "plt.plot(x[:,0][y == 0],x[:,1][y == 0] ,'bs')\n",
    "#绘制决策边界\n",
    "plot_svc_bd(svm_clf2,4,6,False)\n",
    "\n",
    "plt.axis([4,6,0.8,2.8])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 6.3非线性的支持向量机"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import make_moons\n",
    "#样本集\n",
    "x, y = make_moons(n_samples = 100, noise = 0.15)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAETCAYAAAA23nEoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAdZ0lEQVR4nO3dfZAc9X3n8c8XxEqpky+WjCIRGxsTIy7K5WIwBZhQsDKOg/EVOJjcCSgHp0ykoKPih7qqExfHSlClzr6rxBfH5BxKPJjz2ZbO1iUyyJAAu1ZSYAxmJSNZQQjKBMkrwIsOaxOfVqv93h/TK41mp2emp3/9NP1+VU3tPPROf6enp7/9e2xzdwEAcErRAQAAyoGEAACQREIAAERICAAASSQEAECEhAAAkBQoIZjZ3Wb2ipntinl92MxeN7Md0e3TIdYLAAhnXqD3uVfSFyTd12GZv3P3fxtofQCAwIKUENx9u6TXQrwXAKAYoUoIvXi3me2U9CNJ/9Hdd7cuYGarJa2WpAULFrzrrW99a47h9WdmZkannFL+phjiDIs4w6pCnFWIUZL27t37Y3df0tc/u3uQm6SzJO2Kee1fSloY3b9K0nPd3m/58uVeBSMjI0WH0BPiDIs4w6pCnFWI0d1d0lPe53E8l3Tn7j9x98no/jZJp5nZ6XmsGwDQm1wSgpktMzOL7l8YrXcij3UDAHoTpA3BzL4qaVjS6Wa2X9J6SadJkrt/UdJ1km4xs2lJP5W0KiraAABKIkhCcPfru7z+BTW6pQIASqr8TeYAgFyQEAAAkkgIAIAICQEAIImEAACIkBAAAJJICACACAkBACCJhAAAiJAQAACSSAgAgAgJAQAgiYQAAIiQEAAAkkgIAIAICQEAIImEAACIkBAAAJJICACACAmhppYtk8zm3pYtKzoyAEUhIdTUyy8nex7A4CMhAAAkkRAAABESAnJBmwVQfiQE5II2C6D8SAg1tXRpsucBDL55RQeAYhw8WHQEJyxb1lxSGD7+/NKl5YoTGHSUEBBMv+0EVCcB5UBCqLCyNdRmcWAv+jMBdUJCqLBQB+A8EkvaNgtKC0D2aENALlU2ndoCzMKtB0D/KCEAACSRENBFkdVJAPJFQkBHSaqT+m0nOHhQcm/cyqJsDfZAHmhDqLClS5MdmLMWYszAokVTOnRoaM7zeX+mTomwMW5ieM5rjJtA1QUpIZjZ3Wb2ipntinndzOzzZrbPzL5vZueHWG/dNZ9ZN996OSg1nwHHKSKxbNny2JzPM5v4ynK2zrgJDKpQVUb3Srqyw+vvl3ROdFst6X8EWi/61OnglSSx5IEDMJCPIAnB3bdLeq3DItdIus8bviPpjWZ2Roh1A72gTQDoLq82hDdLeqnp8f7oufHmhcxstRolCC1ZskSjo6M5hde/ycnJisY5HLts83KLFl3Stk5/0aIpjY4+Fiy+We2353Ds8r1u+3Z1/o3n494jfp2dlG1fqO7+WT5ViDE1dw9yk3SWpF0xr90v6dKmx49IuqDT+y1fvtyrYGRkpOgQetIaZ/vWh8atSO22Z4hYk77H0qXtl417vgzbrp2q7p9lVIUY3d0lPeV9HsfzKiEckHRm0+O3RM8BpdSp/eTk2VlPYDwFqi6vcQhbJf1W1NvoYkmvu/t4t39Cdqp0PYSyxXrwoDQyMtpX7y6gzIKUEMzsq2pUup5uZvslrZd0miS5+xclbZN0laR9kv5Z0m+HWC/6V6WDV5ViBaosSEJw9+u7vO6S/kOIdaEeOlXLtCaIXpYt2yA+oIwYqYxSSjL2oJdlKWUA3ZEQgC7al0CGmaoCA4fJ7YAuGCmNuiAhAAAkkRCAOVqnuQDqgoSAUkoy9iD0OIUqVgXFzdV07bWXFB0aKoRGZZRSksZaGnbjk1i7eaiAOJQQgD4xhgGDhoQAJDA7TcXIyCglEwwcEkLOmJcfQFmREHJWRJ/2ZcuklSuHSUI9KttkekBeSAglFLoUwcCqZNJcq7oocclq0aKpfANBpZEQSogDOJKKS2JbtoS/qh0GFwmhZLqVAqj2AZAVEkLJJC0FUGoAEAoJIWc0WAIoKxJCzoposCQJVQtdk1EUEkINcA3gMJoP1CtXDmd2oKZTAYpCQgB61OuBmjN8VBUJoWSSVuNQ7VM+nOGjqpjttECdLg7f6eDhnl1MAOqLEkKBOp1JdmoIrnOVxPjhcV1+7+U6OEkDCBAaCaGkOvVGqnOVxIbtG/T3//j32vDtDZmtIy7h5oVeYSgKCSEn7Q4ySGb88Lju2XGPZnxG9+y4J7NSQtLEGvpA3elkoM6lQ2SPhJCTOpy9Z23D9g2a8RlJ0jE/lmkpIU7z9RDiuu9meYZf59IhskdCQCXMlg6mjjVm75w6NpVpKSGNtIMPKQUUg/YpEkIpUVc8V3PpYFZRpYSsUQooRh7tU2VHQiiBpGeSdWx0fHz/48dLB7Omjk3psf1M74z08mqfKjvGIVRQHaecGFszltu64saBDHLCrbt27VN3fOCOgqPKHyWEnNTxrL6qynzFNPaj8KrUPpU1EkJOynyQQXWwH4VXp/apbkgIQMlQCsgX7VMn0IYAlAxn+/nKs32q7CghAGDsQ8kUNSYiSEIwsyvN7Fkz22dm69q8/hEze9XMdkS3m0OsdxDxw0QRGPtQLkWNiUidEMzsVEl3SHq/pBWSrjezFW0W3eTu74xuG9Oud1DxwwTqrcgxESFKCBdK2ufuL7j7lKSvSbomwPsCCIBSZ7UUOWdXiEblN0t6qenxfkkXtVnuQ2Z2maS9kj7h7i+1LmBmqyWtlqQlS5ZodHQ0QHjZmpycDBzncOwradYTIs6JIxO6fc/tWr9ivRYPLU71XnHCb89sVCnOTqXOE59hOPY98vicVdieecQ4cWRCdz19l6ZmToyJuOvpu3TFaVdk9ps7ibunukm6TtLGpscflvSFlmXeJGl+dH+NpEe7ve/y5cu9CkZGRoK+X/te5o1bGiHivOX+W/yUPzrF196/NvV7xQm9PbNSpTh72aey2u+SxFl2ecR4y/23+NCGIdcf6vhtaMNQot+cpKe8z+N5iCqjA5LObHr8lui55qQz4e5HoocbJb0rwHqRo271mswUWW2MfehP6P2+6DERIRLCk5LOMbO3m9mQpFWStjYvYGZnND28WtKeAOsdSGX9YXar12SmyHi9HDSKrudnBHR/Qu/3Y2vG5Ot9zi2vsRKpE4K7T0u6VdJDahzoN7v7bjO73cyujhb7PTPbbWY7Jf2epI+kXe+gKuMPs9tcL8wU2VkvBw16l1XPIO73QcYhuPs2d1/u7r/g7n8cPfdpd98a3b/N3X/J3X/F3Ve6+z+EWC/y0W2ulzJcyaysynDQKGups+oGcb9npHJCrUX7lSuHB74LX6d6TWaK7CzLg0av1UxlLHVW3aDu9ySEhNIW7YuuK+5Hp3pNZoqMl/VBI6tqpiruo3kb1P2ehJCzQasrLrpXRJlV9aAxaPtoFgZ1v2e2U6TCTJHxkhw0uEpbPsYPj2vVN1Zp03WbtGxh/0WeQd3vSQhARpIcNKjPz0dzj686XiKzG6qMANRCGXp8lR0JISG68KEs2BeTGcRuoqGREBJq7cI3MjKaqAsfP2KEEro76WzvojhV3kcHtZtoaCSEnNEnHGXVqRdR1ffRqvb4yhsJAcDAG9RuoqHRywjAwBvUbqKhUUIAAEgiIQAAIiQEAJLoAdeqjhd9IiFkiEnCUCX0gDtZHS/6RELIEJOEAdVU11HNJAQAaFHXUc0kBABoEjeq+bWp1wqOLHskBGCA1PGKfqHFjWq+78X7CoooPyQEYIDQbtVdt95DcaOad7++O4/wCsVI5Qxx0ROgfLpdEyFuVPPo6GjGkRWPEkKG6MYHlEtdew/1ioSASqjjICGEV9feQ70iIaAS6jhICOk1n0hwTYTuSAgoPYr5vWP6iZM1n0j0c02EupVMSQg5qPoUFkX/KCjm9y7tFf0GSeuJxPYXtye+JkLdSqYkhBx06gpYhcRQ5I+CYj761XoicfnbLpev9zm3uF5FrQmFgWnIRZn7iBddXcOlD9GPECcSrQmFgWmovaKra7j0IfqR9kSiXUJ58OCDA18yJSH0oblNYOXK4cq1CfSqDNU1Y2vGEhXzMTjStF2lPZGoa8mUkcp9qMv0AJ1+FO1GeAIhdRtR3EnaE4Z2CWXapwe+ZEoJIQdV7fJXxuqaons8IR9Ft121K5mOXD4y8CVTSgg5mO3yt2xZteY2KuPO33zW+KnLPqVV31ilTddt0rKFA1Zfl9KJfW34pOeXLq1GF9R2bVeUSrNHCSFHzG2UTutZ422P3FarPuJJVLlaswxtV3VFQkBlNJ81Ts9M68vf//KcKgWqlKovVIMu+0JyQRKCmV1pZs+a2T4zW9fm9flmtil6/QkzOyvEeovC9AD5az1rPDpzVMf8mKSTDxZ1G1k6iEK1XbEvJJc6IZjZqZLukPR+SSskXW9mK1oW+6ikQ+7+Dkmfk/TZtOstUnPVz+zUAFT9ZKvdWeOs2SqFnQd3MufRAAjR1bjoRumqClFCuFDSPnd/wd2nJH1N0jUty1wj6UvR/a9LusLMLMC6URPtzhqbHfNjunHLjTo20yg1TM9Mc2ZYY0UPqKwqc/d0b2B2naQr3f3m6PGHJV3k7rc2LbMrWmZ/9Pj5aJkft7zXakmrJWnJkiXv2rx5c6rY8jA5OamFCxcWHUZXgxTn7zz1O9r3T/u6vtf8U+brKxd9RYuHFocK77iyb89rr71Ehw4NzXl+0aIpbdlSvr70SbfnxJEJ3b7ndq1fsX7O9ztxZEI3fPcGTc2cOIEIsS+U/TuftXLlyu+5+wX9/G+pup26+52S7pSkc88914eHh4sNqAejo6MiznB6ifO54efmPLf2gbXa+PRGHZ05evy5Gc3okaOP6I73he+uWPbt+Vo0D9vcOIfU2hW1DJJuz7UPrNWun+xq+/2ufWCt1FL/4Oap94Wyf+chhKgyOiDpzKbHb4mea7uMmc2T9LOSJgKsGwMsSS+Rx/c/flIykBoNz4M+srSOurUPlHFAZVWESAhPSjrHzN5uZkOSVkna2rLMVkk3Rfevk/Sop62rykHVr2NQdUl6iWy7YZsWzFtw0nM/M+9n9K0bv5VVeChIt/YB5r/qX+qE4O7Tkm6V9JCkPZI2u/tuM7vdzK6OFrtL0pvMbJ+kT0qa0zW1jKo8uKfqkvYSqetkZHXDoLVsBRmH4O7b3H25u/+Cu/9x9Nyn3X1rdP//uftvuvs73P1Cd38hxHoxuJL2EqGaoB5I/NkqVaMyIMWfBf7B5X8QO2cR1QH1QOLPFgkBpcO02/noNNliWQdZkvizxVxGKB3OAvNBGxlaUULoYOnSak1XPShCngWOHx5nimygR5QQOmC66upjgjOgdyQEDCwmOAOSISFgYDHBGZAMCQEDiQFM3XFdD7QiIWAgxXVdXffwOq6iFaGNDK1ICBhIcV1X7997P43MQAy6nWIgteu6On54XGd//uzjjcydRj4DdUQJAbVBIzPQGQkBtUAjc/kluf4FskFCQC0wS2b5MYiweCQE1ALzI5XbxJEJBhGWAI3KqAVmySy3+168b077DjPb5o8SAoBCjR8e14MvP0j7TgmQEAAUivad8iAhACjU4/sf17RPn/Qc7TvFICFgYNBtMTtZbtuxNWMauXxEvt5PuhXV7lPn/YiEgIFBt8Xs1Gnbdvqsg54sSAgYCFz7IDt12rbdPuugJ0YSAgYC01Jkp07bttNnrcNYCRICKo9pKbJT9W2bpIqn22dtN1Zi0JAQUHlpuy0Oer1wGmXuEtrL95akiqfTZ63LWAkSAiov7bQUVa8XzjKhlXnKj27fW9K2j06ftcyJMSSmrkDlpeme2HrQqOI1EpoPjKGnexhbM6a1D6zVXWN3aerYlIZOHdLN591c+LQSvXxv7doDOsXdaT867y/Pq8VYCUoIqLUqN5iOHx7XxRsv1j1j7c+Cxw+P62M7Ppaq5FDWNoRu31vouMs2ViIrJATUVsiDRshqm17fa8P2DXriwBOammnE33pg3LB9g555/ZlUSa6MVSW9fG/t4p6emdb5f3l+4cmszEgIqK2QB7uk7RCdDvq9vNf44XHdPXa3JB3/DM0HxtmDpstTnRnH1at/+8VvF9YQ38v31i7uozNHNT45XqlSYN5ICKittA2mswf1nQd3Ju6fHnfQ77UhdMP2DTp67Oic52cPjKGqwsbWjM2pJvH1rsvedllhDfG9fG+tcf/okz/SgnkLJKkUVV5lRaMyaitt/e/sQf3GLTcmarzs1CDaS0Po8f/XzJz3nj17f/7Q83OqVEI1mBfdEN/P95a0gbmuKCEAfWgetbr71d2J2iHizt57bdNoV2UydOqQ1l6w9vjZe79VYb327a9SQ3xZG8bLiIQA9KF51GqrTgfJTgenXts0ulWZpKkK67Vvf5YH19DjKsrYMF5WqaqMzGyxpE2SzpL0Q0n/zt0PtVnumKRnoof/6O5Xp1kvUKTjo1Znptq+3ung2+ng1OuBvFuVSfPro6OjGh4e7rj8rKR9+1vjD1UFE3pcRZkH15VN2jaEdZIecffPmNm66PF/arPcT939nSnXBZRCXJVNLwO2Oh2cktSNjx8e16pvrNKm6zYFq7/vpZ4964NrFu0TgzZWIEtpE8I1koaj+1+SNKr2CQEYGGmu8BXq4BT6LDquKqj1gJz1wZXG32KZu/f/z2b/193fGN03SYdmH7csNy1ph6RpSZ9x97+Keb/VklZL0pIlS961efPmvmPLy+TkpBYuXFh0GF0RZ1hFxjlxZEI3fPcGTc1Maf4p8/WVi76ixUOL2y7ba5yf2/s5bTu47aREN8/m6QNnfEAfP+fjoUKPNTk5qSOnHTn+uWZ1+3x5qsq+uXLlyu+5+wX9/G/XEoKZPSypXZnt95sfuLubWVx2eZu7HzCzsyU9ambPuPvzrQu5+52S7pSkc88913ut+yxSkjraIhFnWEXGufaBtZI17ru5Hjn6iO54X/uz6F7j/MSzn5hT6pn2ab0482Liz9lPddbo6Ki2/dO2459rVrfPl6eq7JtpdE0I7v7euNfM7GUzO8Pdx83sDEmvxLzHgejvC2Y2Kuk8SXMSAlAlWdTj97LOXqp2kgpZFdRvdRaNv8VL2+10q6Sbovs3Sfrr1gXMbJGZzY/uny7pVyX9IOV6gcIVMW122btQprncZtyoaBqF85M2IXxG0q+Z2XOS3hs9lpldYGYbo2V+UdJTZrZT0ogabQgkBFRaUZdTLPtZdNUGreFkqXoZufuEpCvaPP+UpJuj+49J+uU06wHKpt3lFNtVj4SuVirz2XJW1VnIDyOVgYSSXE6x6ldjS6Ls1VnojoQAJNTrgS9NfXoVlb06C90x2ymQUK8D0+o2yKrM1VnoDQkBSGhszVjXPunUp6OKqDICMkB9OqqIhABkgPp0VBFVRkAGqE9HFVFCAABIIiEASCn0Fc5QHBICgFTqNPhu0JEQAPStboPvBh0JAUDfmMxusJAQgAh14cnEDb5j+1UXCQGIUBeeDIPvBg8JARB14f1g8N3gYWAaoPpNRBcCg+8GDyUE1B514UADCQG1R1040EBCQO1RFw400IaA2qMuHGighAAAkERCAABESAgAAEkkBABAhIQAAJBEQgAAREgIAABJJAQAQISEAACQREIAAERICAAASSQEAECEhAAAkERCAABESAgAAEkpE4KZ/aaZ7TazGTO7oMNyV5rZs2a2z8zWpVknACAbaUsIuyRdK2l73AJmdqqkOyS9X9IKSdeb2YqU6wUABJbqimnuvkeSzKzTYhdK2ufuL0TLfk3SNZJ+kGbdAICw8riE5pslvdT0eL+ki9otaGarJa2OHh4xs10ZxxbC6ZJ+XHQQPSDOsIgzrCrEWYUYJencfv+xa0Iws4clLWvz0u+7+1/3u+J23P1OSXdG633K3WPbJcqCOMMizrCIM5wqxCg14uz3f7smBHd/b79vHjkg6cymx2+JngMAlEge3U6flHSOmb3dzIYkrZK0NYf1AgASSNvt9DfMbL+kd0t6wMweip7/eTPbJknuPi3pVkkPSdojabO77+7h7e9ME1uOiDMs4gyLOMOpQoxSijjN3UMGAgCoKEYqAwAkkRAAAJHSJIQE02D80MyeMbMdabpX9asq03WY2WIz+1szey76uyhmuWPRttxhZrk19nfbPmY238w2Ra8/YWZn5RVbSxzd4vyImb3atA1vLiDGu83slbhxO9bw+egzfN/Mzs87xiiObnEOm9nrTdvy0wXEeKaZjZjZD6Lf+cfaLFP49uwxzuTb091LcZP0i2oMqBiVdEGH5X4o6fQyxynpVEnPSzpb0pCknZJW5Bznf5W0Lrq/TtJnY5abLGAbdt0+ktZK+mJ0f5WkTSWN8yOSvpB3bC0xXCbpfEm7Yl6/StK3JJmkiyU9UdI4hyXdX/C2PEPS+dH9N0ja2+Y7L3x79hhn4u1ZmhKCu+9x92eLjqObHuM8Pl2Hu09Jmp2uI0/XSPpSdP9Lkj6Y8/o76WX7NMf/dUlXWJc5UjJQhu+xK3ffLum1DotcI+k+b/iOpDea2Rn5RHdCD3EWzt3H3f3p6P5hNXpGvrllscK3Z49xJlaahJCAS/obM/teNNVFGbWbriP1l5XQUncfj+4flLQ0ZrkFZvaUmX3HzD6YT2g9bZ/jy3ij6/Lrkt6US3RtYojEfY8fiqoOvm5mZ7Z5vWhl2B979W4z22lm3zKzXyoykKia8jxJT7S8VKrt2SFOKeH2zGMuo+MCTYNxqbsfMLOfk/S3ZvYP0ZlHMIHizFynOJsfuLubWVz/4rdF2/NsSY+a2TPu/nzoWAfYNyV91d2PmNkaNUo17yk4pqp6Wo39cdLMrpL0V5LOKSIQM1so6RuSPu7uPykihl50iTPx9sw1IXj6aTDk7geiv6+Y2f9Ro1gfNCEEiDOX6To6xWlmL5vZGe4+HhVnX4l5j9nt+YKZjapxppF1Quhl+8wus9/M5kn6WUkTGcfVqmuc7t4c00Y12m7KphLTxzQf0Nx9m5n9hZmd7u65TihnZqepcZD9X+6+pc0ipdie3eLsZ3tWqsrIzP6Fmb1h9r6k96lxTYayKcN0HVsl3RTdv0nSnJKNmS0ys/nR/dMl/arymZa8l+3THP91kh71qKUsR13jbKk7vlqNutyy2Srpt6LeMRdLer2pOrE0zGzZbDuRmV2oxvEp15OAaP13Sdrj7n8as1jh27OXOPvannm3jndoNf8NNerijkh6WdJD0fM/L2lbdP9sNXp67JS0W40qnNLF6Sd6IuxV42y7iDjfJOkRSc9JeljS4uj5CyRtjO5fIumZaHs+I+mjOcY3Z/tIul3S1dH9BZL+t6R9kr4r6eyC9stucf6XaF/cKWlE0r8qIMavShqXdDTaNz8q6Xcl/W70uqlxkarno+85thdfwXHe2rQtvyPpkgJivFSNdsrvS9oR3a4q2/bsMc7E25OpKwAAkipWZQQAyA4JAQAgiYQAAIiQEAAAkkgIAIAICQEAIImEAACIkBCANszsb8zMzexDLc+bmd0bvfaZouIDssDANKANM/sVNSYHe1bSL7v7sej5P5H0SUl3uvuaAkMEgqOEALTh7jsl/U81Loj0YUkys/+sRjLYLOmW4qIDskEJAYgRXdtgrxrXk/gTSX8u6SE15jGaKjI2IAuUEIAY7v6SpP8u6Sw1ksFjkq5tTQZmdpuZPWlmP7HG9ZW/aWb/OveAgZRICEBnrzbd/6i7/3ObZYYl/YUas8e+R9K0pIfNbHH24QHhUGUExDCzGyR9WY1pzpdJ+qK7d207iK5i9bqkD7r7N7ONEgiHEgLQRnTJwXvVuADTv1Gjt9HNZnZuD//+BjV+W4cyCxDIAAkBaGFml0r6uhoXcfl1d39V0qfUuOTsZ3t4iz9T44Ilj2cVI5AFqoyAJmb2Tkmjkn4q6VJ3f77ptSfVuOLcZe7+dzH//6dqXGrzUnd/IfOAgYAoIQARM3uHpAfVuDThrzcng8ht0d//FvP/n5N0vaT3kAxQRZQQgADM7M8k/XtJK919T9HxAP2YV3QAQNWZ2R1qjGb+oKRDZrYsemnS3ScLCwxIiBICkJKZxf2I/sjd/zDPWIA0SAgAAEk0KgMAIiQEAIAkEgIAIEJCAABIIiEAACIkBACAJBICACBCQgAASJL+P2+Da7alFPo4AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_df(x,y,axes):\n",
    "    #标签为0\n",
    "    plt.plot(x[:,0][y == 0],x[:,1][y == 0] ,'bs')\n",
    "    #标签为1 \n",
    "    plt.plot(x[:,0][y == 1],x[:,1][y == 1] ,'g^')\n",
    "\n",
    "    plt.axis(axes)\n",
    "    plt.grid(True,which='both')\n",
    "    plt.xlabel(r\"$x_1$\",fontsize = 20)\n",
    "    plt.xlabel(r\"$x_2$\",fontsize = 20, rotation = 0)\n",
    "\n",
    "plot_df(x,y,[-1.5,2.5,-1,1.5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import PolynomialFeatures"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "d:\\python3.8\\lib\\site-packages\\sklearn\\svm\\_base.py:1206: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.\n",
      "  warnings.warn(\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "Pipeline(steps=[('poly_feature', PolynomialFeatures(degree=3)),\n",
       "                ('scaler', StandardScaler()),\n",
       "                ('svm_clf', LinearSVC(C=10, loss='hinge'))])"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "polynomian_svm_clf = Pipeline((\n",
    "    ('poly_feature', PolynomialFeatures(degree = 3)),\n",
    "    ('scaler',StandardScaler()),\n",
    "    ('svm_clf',LinearSVC(C = 10,loss ='hinge'))\n",
    "))\n",
    "polynomian_svm_clf.fit(x,y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_prediction(clf,axes):\n",
    "    # x 轴切分\n",
    "    x0s = np.linspace(axes[0],axes[1],100)\n",
    "    # y 轴切分\n",
    "    x1s = np.linspace(axes[2],axes[3],100)\n",
    "    # 预测特征\n",
    "    x0,x1 = np.meshgrid(x0s,x1s)\n",
    "    #交叉合并\n",
    "    x = np.c_[x0.ravel(),x1.ravel()]\n",
    "\n",
    "    #分类预测的结果\n",
    "    pred = clf.predict(x).reshape(x0.shape)\n",
    "\n",
    "    # 绘制决策边界\n",
    "    plt.contourf(x0,x1,pred, cmap = plt.cm.brg, alpha = 0.2)\n",
    "\n",
    "plot_prediction(polynomian_svm_clf,[-1.5,2.5,-1,1.5])\n",
    "plot_df(x,y,[-1.5,2.5,-1,1.5])"
   ]
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "8bfad08b73d8ae58273d7e252c9e1d922058e2a21d3a8ccb2a1b9808ae54a57f"
  },
  "kernelspec": {
   "display_name": "Python 3.8.0 32-bit",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.0"
  },
  "orig_nbformat": 4
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
